The present invention relates generally to randomly accessible memory systems.
Memory systems operate in a generally serial fashion. That is, the memory system will handle a request for data from one particular address, operate upon that request, supply the requested data, and then turn and start the next request. Generally, the first request must be completed before the second request can be initiated. When the memory system is a large one, and is randomly accessible, the access time for a particular data word may be significant with respect to the overall operating system of which the memory system is a part.
Buffer memories have been developed which attempt to decrease the access time necessary for some data words requested. Generally, these buffer memory systems try to anticipate future requests for data words by providing a separate and faster buffer memory into which are stored selected data words which the memory system feels may be requested in the future. If such data words are requested, they will be available without the necessity of going to the main memory. Generally, the data words which are selected for storage in the buffer memory are tied in some fashion to the address of a normal memory request. For example, when one particular data word is requested from main memory, more than just that data word may be loaded into the buffer memory. Generally, this is accomplished on a page or block basis in which data words are grouped into pages or blocks and when one data word within that page or block is requested, then all of the data words within that page or block are loaded into the buffer memory and then are available for subsequent memory requests. When a subsequent request occurs to one of the other data words within the page or block, that data can be made available much quicker than if that data were not located in the buffer memory.
The basis for loading a page or block of data words into the buffer memory when one of the data words is requested from the memory system is based on the limited assumption that requests to the memory system will tend to be somewhat sequential in nature based on the general flow of a software program. If the flow is generally sequential, then the next data word following that data word which has been requested from the memory system will be the most likely candidate for future accesses. As buffer memories are increased in size and the data words which are loaded into the buffer memory become larger and larger, the benefit, or rather the likelihood that the next request will be a request for one of those data words, increases. But such increase is not in direct proportion to the number of data words being added to the buffer.
Buffer memories of present memory systems are somewhat expensive to construct. The buffer memory requires not only the randomly accessible memory unit in which the data words contained in the buffer memory are stored, but also includes an associative memory which is used to determine which data words are present in the buffer memory and for matching the address of a future request to those addresses of data words present in the buffer memory.